package com;

/**
 * 负责实现class文件的加载和和热更新
 * @author 大忽悠
 * @create 2023/1/11 13:07
 */
public class HotSwapClassLoader extends ClassLoader {
    /**
     * @param bytes class二进制字节流
     * @return 加载class二进制流到JVM
     */
    protected Class<?> loadBytes(byte[] bytes){
         return defineClass(null,bytes,0,bytes.length);
    }

    /**
     * @param bytes class文件二进制流
     * @return 加载后得到的class对象
     */
    public static Class<?> hotSwap(byte[] bytes){
        HotSwapClassLoader hotSwapClassLoader = new HotSwapClassLoader();
        return hotSwapClassLoader.loadBytes(bytes);
    }
}
